"use client"; import { getWheelApi } from "@/api/cashWheel"; import { ServiceTypes } from "@/api/customservice"; import { lredPacketApi, redPacketApi } from "@/api/promo"; import { getGiveInfoApi } from "@/api/slots"; import { Timeout } from "@/components/ModalPopup/RechargeModal"; import RedPacketModal, { RedPacketModalProps } from "@/components/ModalPopup/RedPacketModal"; import SlotsModal, { SlotModalRefProps } from "@/components/ModalPopup/SlotsModal"; import dialogManage from "@/dialog/manager"; import { useEventPoint } from "@/hooks/useEventPoint"; import { Link } from "@/i18n/routing"; import { useFirstPayStore } from "@/stores/useFirstPayStore"; import { useGlobalNoticeStore } from "@/stores/useGlobalNoticeStore"; import useWheelStore from "@/stores/useWheelStore"; import { getToken } from "@/utils/Cookies"; import { useRequest } from "ahooks"; import { Badge } from "antd-mobile"; import { useTranslations } from "next-intl"; import Image from "next/image"; import { FC, useEffect, useRef, useState } from "react"; interface Props { services: ServiceTypes[]; } interface SlotSectionProps { onDestory?: () => void; } /** * 免费送活动 */ const SlotSection: FC = ({ onDestory }) => { const slotsRef = useRef(null); const getSlots = async () => { const token = getToken(); if (token) { const result = await getGiveInfoApi(); return result.data; } else { destory(); return Promise.resolve({}); } }; const { data: slots, run: slotRun } = useRequest(getSlots, { pollingInterval: 2000, pollingErrorRetryCount: 1, }); const slotHandler = () => { slotsRef.current?.onOpen(slots); }; const destory = () => { if (onDestory && typeof onDestory === "function") onDestory(); }; return ( <> {slots?.id ? ( ) : null} {/*随机送*/} ); }; /** * 轮盘 */ const WheelSection = () => { const { wheelStatus } = useWheelStore((state) => ({ wheelStatus: state.status, })); return ( <> {wheelStatus === 2 ? ( {"wheel"} ) : null} ); }; /** * 首充 */ const PaySection = () => { const token = getToken(); const { firstPay, getPayData } = useFirstPayStore((state) => { return { firstPay: state.first_pay, getPayData: state.getPayData, }; }); const { data, run: payRun } = useRequest(getPayData, { pollingErrorRetryCount: 1, pollingWhenHidden: false, }); return ( <> {firstPay.map((item, index) => { return (
{ dialogManage.showDialog("PaySection", firstPay, index); // userRechargeRef.current?.onOpen && // userRechargeRef.current?.onOpen(firstPay, index); }} alt="" /> {item.count_down > 0 ? ( ) : null}
); })} ); }; /** * 红包雨 */ const RedPacketSection = () => { const token = getToken(); const redPacketModalRef = useRef(null); const getRedPacketInfo = async () => { try { let redPacketInfo: any; let actList: any = []; if (token) { redPacketInfo = await lredPacketApi(); actList = redPacketInfo.data?.red_packets || []; } else { redPacketInfo = await redPacketApi(); actList = redPacketInfo.data || []; } // 已经开始 return actList.filter((aItem: any) => { return aItem.is_start; }); } catch (error) {} }; // 红包雨轮询 const { data: packets, run } = useRequest(getRedPacketInfo, { pollingInterval: 5000, pollingErrorRetryCount: 1, pollingWhenHidden: false, }); return ( <> {packets?.map((item, index) => { const icons = JSON.parse(item.icon); const icon = icons[icons.length - 1]; return (
{ redPacketModalRef.current?.onOpen(packets, index); }} alt="" />
); })} {/*红包雨弹窗*/} ); }; const MessageSection = () => { const { unread, userUnred } = useGlobalNoticeStore((state) => ({ unread: state.unread, userUnred: state.userUnred, })); return ( <> {unread || userUnred ? ( ) : null} ); }; /** * 客服 */ const CustomerSection: FC> = (props) => { const { services } = props; const defaultService = services?.filter((item) => item.is_suspend === 1); return ( <> {defaultService?.map((item, index) => ( {""} ))} ); }; const ServiceWidget: FC = (props) => { const { services } = props; const [type, setType] = useState(0); const { eventView } = useEventPoint(); const newServices = services?.filter((item) => item.status === 1) || []; const getWheel = () => { if (!getToken()) return Promise.resolve(undefined); return getWheelApi().then((res) => { return res.data; }); }; useEffect(() => { // 数据存储,侧边栏使用 // setSocials(socials); // pixel 埋点 // eventView(); }, []); const t = useTranslations("HomePage"); return ( <>
{/* {React.cloneElement(curComponents, { onDestory: modalDestory })} */} {/*轮盘 */} {/*首充*/} {/* 红包雨icon */} {/*未读消息*/} {/*客服*/} {/* 签到 */} {/* */}
= 5 ? 5 : (newServices?.length ?? 1)},1fr)`, }} > {newServices.map((service, index) => { return ( ); })}
{t("Service")}
{/*share*/}
{t("Share")}
{"BCWIN777"} ); }; export default ServiceWidget;